home *** CD-ROM | disk | FTP | other *** search
/ Freelog 117 / FreelogNo117-OctobreNovembre2013.iso / Programmation / jedit / jedit5.1.0install.exe / {app} / macros / Emacs / Emacs_Previous_Line.bsh < prev    next >
Text File  |  2013-07-28  |  1KB  |  46 lines

  1. /*
  2.  * Emacs_Previous_Line.bsh - Beanshell macro for jEdit that provides
  3.  * 'Emacs-like scrolling.  If the caret is at the top of the 
  4.  * screen the current line is centered on the screen rather than 
  5.  * scrolling the whole text area by one line.  For machines with
  6.  * slow painting, this can increase scrolling speed.
  7.  *
  8.  * Copyright (C) 2002-2004, Ollie Rutherfurd <oliver@rutherfurd.net>
  9.  *
  10.  * $Id: Emacs_Previous_Line.bsh 22257 2012-09-27 20:22:23Z ezust $
  11.  */
  12.  
  13. void emacsPreviousLine(View view){
  14.  
  15.     // need access to textArea.lastLinePartial
  16.     setAccessibility(true);
  17.  
  18.     int first = textArea.getFirstLine();
  19.     int caretLine = textArea.getScreenLineOfOffset(textArea.getCaretPosition());
  20.     int visibleLines = textArea.getVisibleLines();
  21.     int electricScroll = textArea.getElectricScroll();
  22.  
  23.     if(caretLine <= electricScroll){
  24.         int newFirst = first - ((visibleLines - electricScroll) / 2);
  25.         // if jumping would put us over the top, just go to top
  26.         if(newFirst < 0){
  27.             newFirst = 0;
  28.         }
  29.         textArea.setFirstLine(newFirst);
  30.     }
  31.     textArea.goToPrevLine(false);
  32. }
  33.  
  34. emacsPreviousLine(view);
  35.  
  36. /*
  37.     <listitem>
  38.         <para><filename>Emacs_Previous_Line.bsh</filename></para>
  39.         <abstract><para>
  40.             Moves the cursor to the previous line, centering 
  41.             the current line in the middle of the text area
  42.             if the cursor is at the top of the text area.
  43.         </para></abstract>
  44.     </listitem>
  45. */
  46.